package cn.tedu.service;


import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Service;

@Aspect  //标记着这是一个aop类:切面(由切点和组成)
@Service  //ioc
public class AopAspect {
    //切点(指定具体要用通知的类或者方法)
    //切点表达式:*是通配符 ..表示0~n个
                    //方法返回值/包路径/子包/类名/方法名  参数列表
    @Pointcut("execution( * cn.tedu.service..*.*(..))") //切点表达式
    public void point(){}
    //通知
    @Around("point()")
    public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {
        //计时开始
        long start = System.currentTimeMillis();
        //去执行你的业务方法  joinPoint--连接点
        Object obj = joinPoint.proceed();
        //计时结束
        start = System.currentTimeMillis()-start;
        System.out.println("方法执行时间是: "+start);
        return  obj;
    }

}
